<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>无人深空 - I am alone, but I don't feel lonely.</title><meta name="author" content="zcm"><meta name="copyright" content="zcm"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta property="og:type" content="website">
<meta property="og:title" content="无人深空">
<meta property="og:url" content="https://gitee.com/zcmmmm/zcmmmm/index.html">
<meta property="og:site_name" content="无人深空">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://s2.loli.net/2022/09/22/36LN4kcjYOd9HT8.jpg">
<meta property="article:author" content="zcm">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://s2.loli.net/2022/09/22/36LN4kcjYOd9HT8.jpg"><link rel="shortcut icon" href="/img/favicon.png"><link rel="canonical" href="https://gitee.com/zcmmmm/zcmmmm/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.min.css" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = { 
  root: '/',
  algolia: undefined,
  localSearch: {"path":"/search.xml","preload":false,"languages":{"hits_empty":"找不到您查询的内容：${query}"}},
  translate: undefined,
  noticeOutdate: undefined,
  highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":200},
  copy: {
    success: '复制成功',
    error: '复制错误',
    noSupport: '浏览器不支持'
  },
  relativeDate: {
    homepage: false,
    post: false
  },
  runtime: '天',
  date_suffix: {
    just: '刚刚',
    min: '分钟前',
    hour: '小时前',
    day: '天前',
    month: '个月前'
  },
  copyright: undefined,
  lightbox: 'fancybox',
  Snackbar: {"chs_to_cht":"你已切换为繁体","cht_to_chs":"你已切换为简体","day_to_night":"你已切换为深色模式","night_to_day":"你已切换为浅色模式","bgLight":"#49b1f5","bgDark":"#1f1f1f","position":"bottom-left"},
  source: {
    justifiedGallery: {
      js: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.js',
      css: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.css'
    }
  },
  isPhotoFigcaption: false,
  islazyload: false,
  isAnchor: false
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
  title: '无人深空',
  isPost: false,
  isHome: true,
  isHighlightShrink: false,
  isToc: false,
  postUpdate: '2023-05-18 19:46:05'
}</script><noscript><style type="text/css">
  #nav {
    opacity: 1
  }
  .justified-gallery img {
    opacity: 1
  }

  #recent-posts time,
  #post-meta time {
    display: inline !important
  }
</style></noscript><script>(win=>{
    win.saveToLocal = {
      set: function setWithExpiry(key, value, ttl) {
        if (ttl === 0) return
        const now = new Date()
        const expiryDay = ttl * 86400000
        const item = {
          value: value,
          expiry: now.getTime() + expiryDay,
        }
        localStorage.setItem(key, JSON.stringify(item))
      },

      get: function getWithExpiry(key) {
        const itemStr = localStorage.getItem(key)

        if (!itemStr) {
          return undefined
        }
        const item = JSON.parse(itemStr)
        const now = new Date()

        if (now.getTime() > item.expiry) {
          localStorage.removeItem(key)
          return undefined
        }
        return item.value
      }
    }
  
    win.getScript = url => new Promise((resolve, reject) => {
      const script = document.createElement('script')
      script.src = url
      script.async = true
      script.onerror = reject
      script.onload = script.onreadystatechange = function() {
        const loadState = this.readyState
        if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
        script.onload = script.onreadystatechange = null
        resolve()
      }
      document.head.appendChild(script)
    })
  
      win.activateDarkMode = function () {
        document.documentElement.setAttribute('data-theme', 'dark')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
        }
      }
      win.activateLightMode = function () {
        document.documentElement.setAttribute('data-theme', 'light')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
        }
      }
      const t = saveToLocal.get('theme')
    
          if (t === 'dark') activateDarkMode()
          else if (t === 'light') activateLightMode()
        
      const asideStatus = saveToLocal.get('aside-status')
      if (asideStatus !== undefined) {
        if (asideStatus === 'hide') {
          document.documentElement.classList.add('hide-aside')
        } else {
          document.documentElement.classList.remove('hide-aside')
        }
      }
    
    const detectApple = () => {
      if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
        document.documentElement.classList.add('apple')
      }
    }
    detectApple()
    })(window)</script><link rel="stylesheet" href="/css/categories.css?v1"><link rel="stylesheet" href="/css/navigation.css?v1"><link rel="stylesheet" href="/css/custom.css?v1"><meta name="generator" content="Hexo 6.3.0"></head><body><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="https://s2.loli.net/2022/09/22/36LN4kcjYOd9HT8.jpg" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="sidebar-site-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">43</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">25</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">11</div></a></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 时间轴</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div></div></div></div><div class="page" id="body-wrap"><header class="not-top-img" id="page-header"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">无人深空</a></span><div id="menus"></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 时间轴</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div></div><div id="nav-right"><div id="search-button"><a class="site-page social-icon search"><i class="fas fa-search fa-fw"></i></a></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav></header><main class="layout" id="content-inner"><div class="recent-posts" id="recent-posts"><div class="recent-post-item"><div class="post_cover left"><a href="/2023/05/11/%E7%BD%91%E7%BB%9CIO/" title="网络 IO"><img class="post_bg" src="https://study-record-images.oss-cn-beijing.aliyuncs.com/Java/Redis/Redis.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="网络 IO"></a></div><div class="recent-post-info"><a class="article-title" href="/2023/05/11/%E7%BD%91%E7%BB%9CIO/" title="网络 IO">网络 IO</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-05-11T14:45:08.000Z" title="发表于 2023-05-11 22:45:08">2023-05-11</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E9%9D%A2%E7%BB%8F/">面经</a><i class="fas fa-angle-right article-meta-link"></i><a class="article-meta__categories" href="/categories/Others/">Others</a></span></div><div class="content">网络 IO参考视频
1.基础概念
Socket 套接字
对网络中不同主机上的应用进程之间进行双向通信的端点的抽象
客户端将数据通过网线发送到服务端，客户端发送数据需要一个出口，服务端接收数据需要一个入口，这两个 “口” 就是 Socket

FD：File Descriptor
文件描述符，非负整数
一切皆文件：linux 中的一切资源都可以通过文件的方式进行访问和管理
FD 类似于文件的索引（符号），指向某个资源，内核（kernel）利用 FD 来访问和管理资源

IO 模型举例

你是一个老师，让学生做作业，学生做完后收作业


同步阻塞：逐个收作业，先收 A，然后 B，C，D，如果有一个学生未做完，则等到他做完才继续收下一个
同步非阻塞：逐个收作业，先收 A，然后 B，C，D，如果有一个学生未做完，则跳过他，继续收下一个
select &#x2F; poll：学生写完作业举手，但是不知道是谁举手，需要一个个询问
epoll：学生写完作业举手，知道是谁举手，直接去收作业



2.同步阻塞 IO
单线程：某个 Socket 阻塞，会影响到其他 Socket 处理
多线程：客户端较多 ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2023/04/17/Java%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E7%82%B9%E6%96%87%E7%AB%A0%E6%B1%87%E6%80%BB/" title="Java 基础知识点文章汇总"><img class="post_bg" src="https://study-record-images.oss-cn-beijing.aliyuncs.com/Java.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Java 基础知识点文章汇总"></a></div><div class="recent-post-info"><a class="article-title" href="/2023/04/17/Java%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E7%82%B9%E6%96%87%E7%AB%A0%E6%B1%87%E6%80%BB/" title="Java 基础知识点文章汇总">Java 基础知识点文章汇总</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-04-17T14:47:24.000Z" title="发表于 2023-04-17 22:47:24">2023-04-17</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/Java/">Java</a></span></div><div class="content">合集JavaGuide（学习&amp;&amp;面试指南）
Java 全栈知识体系
JUC 和 JVM 总结
锁Java 中的锁分类
互斥锁 vs 自旋锁
volatile 详解
volatile 和 synchronized 的区别
i++在两个线程分别执行100次，最大值和最小值分别多少
synchronized 与 ReentrantLock 的区别
Java 对象锁和类锁全面解析
深入理解 synchronized 底层原理
单例模式–双重检验锁真的线程安全吗
集合ArrayList的扩容机制
HashMap 的扩容机制
ConcurrentHashMap 原理
ConcurrentHashMap 底层实现原理 - B站
进程、线程进程控制块( PCB )
线程同步的几种方式
进程间通信的 7 种方式
协程的原理以及与线程的区别
线程崩溃是否会造成进程崩溃
Thread.sleep(0) 的作用
Thread 启动线程的 start 方法能执行多次吗
java 线程池
Java 实现生产者和消费者的几种方式
进程与线程的联系和区别
Java-多线程：Callable 接口和 R ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2023/04/17/%E7%AE%97%E6%B3%95%E3%80%81%E6%99%BA%E5%8A%9B-%E6%96%87%E7%AB%A0%E6%B1%87%E6%80%BB/" title="算法、智力题文章汇总"><img class="post_bg" src="https://study-record-images.oss-cn-beijing.aliyuncs.com/Algorithm.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="算法、智力题文章汇总"></a></div><div class="recent-post-info"><a class="article-title" href="/2023/04/17/%E7%AE%97%E6%B3%95%E3%80%81%E6%99%BA%E5%8A%9B-%E6%96%87%E7%AB%A0%E6%B1%87%E6%80%BB/" title="算法、智力题文章汇总">算法、智力题文章汇总</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-04-17T14:37:24.000Z" title="发表于 2023-04-17 22:37:24">2023-04-17</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/Algorithm/">Algorithm</a></span></div><div class="content">算法Java实现单链表的快速排序和归并排序
生产者消费者模式的实现
使用二进制处理均等概率问题
数据流中的中位数
约瑟夫环问题的三种解法讲解
找到字符串中所有字母异位词
电梯调度算法
螺钉和螺母问题
智力</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2023/04/17/Android%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E7%82%B9%E6%96%87%E7%AB%A0%E6%B1%87%E6%80%BB/" title="Android 基础知识点文章汇总"><img class="post_bg" src="https://study-record-images.oss-cn-beijing.aliyuncs.com/Android.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Android 基础知识点文章汇总"></a></div><div class="recent-post-info"><a class="article-title" href="/2023/04/17/Android%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E7%82%B9%E6%96%87%E7%AB%A0%E6%B1%87%E6%80%BB/" title="Android 基础知识点文章汇总">Android 基础知识点文章汇总</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-04-17T14:17:24.000Z" title="发表于 2023-04-17 22:17:24">2023-04-17</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/Android/">Android</a></span></div><div class="content">合集进击的 Android 秃头
Handler &amp; Binder图解 Handler 机制
牛啊！居然把 Handler 事件分发、Handler 线程切换讲得这么清楚
Android 异步通信：详解 Handler 内存泄露的原因
了解 Binder 机制原理和底层实现
Binder 与 Handler 的简要理解
IPC（跨进程通信）
ViewView 的绘制流程 - B站视频
View 的绘制流程 - 知乎
RecyclerView 的缓存机制
RecyclerView 的四级缓存-初探
ListView 的四种优化方式
四大组件Android 四大组件详细总结
Fragment 和 activity 的区别
Android 中 Fragment 的懒加载
Activity 生命周期
Activity 生命周期函数调用顺序
Android Service 两种启动方式详解
其他Android 数据存储、数据持久存储方式
AsyncTask、HandlerThread、IntentService 的使用场景
AsyncTask 的内部实现、适用场景、执行过程
Androi ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2023/03/03/Java%E5%87%BD%E6%95%B0%E5%BC%8F%E7%BC%96%E7%A8%8B/" title="Java函数式编程"><img class="post_bg" src="https://study-record-images.oss-cn-beijing.aliyuncs.com/Java/FunctionalProgramming/Functional%20programmi.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Java函数式编程"></a></div><div class="recent-post-info"><a class="article-title" href="/2023/03/03/Java%E5%87%BD%E6%95%B0%E5%BC%8F%E7%BC%96%E7%A8%8B/" title="Java函数式编程">Java函数式编程</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-03-03T01:47:38.000Z" title="发表于 2023-03-03 09:47:38">2023-03-03</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/Java/">Java</a></span></div><div class="content">Java函数式编程参考教程
概念：面向对象思想关注用什么对象完成什么事情。而函数式编程思想就类似数学中的函数。它关注的是对数据进行了说明操作（类似把具体的操作代码通过参数的形式传递进去）
优点：

为了看懂公司大佬写的代码
大数据量下处理集合效率高
代码可读性高
减少嵌套


Lambda 表达式
Lambda 是 JDK8 中的语法糖，它可以对某些匿名内部类的写法进行简化，是函数式编程思想的一个重要体现
不用关注是什么对象，而是更关注我们对数据进行了什么操作
写 Lambda 记得看底层源码

关注的是参数列表和具体的逻辑代码体
省略规则：

参数类型可以省略
方法体中只有一句代码时大括号 return 和唯一一句代码的分号可以省略
方法只有一个参数时小括号可以省略


Stream 流
流不会影响原数据
在流中可以处理很多数据，但是正常情况下是不会影响到原来集合中的元素

流代码分为三步：

创建流

单列集合：集合对象.stream()
List&lt;Author&gt; authors;Stream&lt;Author&gt; stream = authors.stream( ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2022/12/10/zookeeper%E9%9D%A2%E7%BB%8F/" title="Zookeeper面经"><img class="post_bg" src="https://study-record-images.oss-cn-beijing.aliyuncs.com/Zookeeper/Zookeeper.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Zookeeper面经"></a></div><div class="recent-post-info"><a class="article-title" href="/2022/12/10/zookeeper%E9%9D%A2%E7%BB%8F/" title="Zookeeper面经">Zookeeper面经</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2022-12-10T05:47:38.000Z" title="发表于 2022-12-10 13:47:38">2022-12-10</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E9%9D%A2%E7%BB%8F/">面经</a><i class="fas fa-angle-right article-meta-link"></i><a class="article-meta__categories" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a></span></div><div class="content">Zookeeper 面经1.介绍下 Zookeeper
简介

Zookeeper 是一个开源的分布式的，为分布式框架提供协调服务的 Apache 项目
工作机制如下图



优点

分布式协调过程简单：zk 节点之间的协调过程非常简单
同步：zk 高度同步，这意味着服务器进程之间既存在互斥又存在合作，同步有助于Apache HBase进行配置管理
序列化：根据具体规则，zk 对数据进行编码。 另外它还可确保应用程序始终如一地运行。 但是在 MapReduce 中，使用序列化来协调队列以执行正在运行的线程
消息有序性：zk 中的消息是有序的。 为了实现更高级别的抽象，需要有序性
可扩展性：可以通过部署更多机器来加强zk的性能
实时性：zk 保证在一定时间段内，客户端最终一定能从服务器上读到最新的数据状态
原子性：zk 只有两种情况，要么全部成功，要么全部失败，没有中间状态的情况


缺点 &#x2F; 局限性

zookeeper 不是为高可用设计的

由于要跨机房容灾，很多系统实际上是需要跨机房部署的。出于性价比的考虑，通常会让多个机房同时工作，而不会搭建 N 倍冗余。也就是说单个机 ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2022/12/05/Hadoop%E9%9D%A2%E7%BB%8F/" title="Hadoop 面经"><img class="post_bg" src="https://study-record-images.oss-cn-beijing.aliyuncs.com/BigData/Hadoop/Hadoop.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Hadoop 面经"></a></div><div class="recent-post-info"><a class="article-title" href="/2022/12/05/Hadoop%E9%9D%A2%E7%BB%8F/" title="Hadoop 面经">Hadoop 面经</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2022-12-05T01:08:17.000Z" title="发表于 2022-12-05 09:08:17">2022-12-05</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E9%9D%A2%E7%BB%8F/">面经</a><i class="fas fa-angle-right article-meta-link"></i><a class="article-meta__categories" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a></span></div><div class="content">Hadoop 面经1.Hadoop 基础1.介绍下 Hadoop
Hadoop 是一个分布式系统基础架构，主要是为了解决海量数据的存储和海量数据的分析计算问题


优点
Hadoop 具有按位存储和处理数据能力的高可靠性
Hadoop 通过可用的计算机集群分配数据，完成存储和计算任务，这些集群可以方便地扩展到数以千计的节点中，具有高扩展性
Hadoop 能够在节点之间进行动态地移动数据，并保证各个节点的动态平衡，处理速度非常快，具有高效性
Hadoop 能够自动保存数据的多个副本，并且能够自动将失败的任务重新分配，具有高容错性


缺点
Hadoop 不适用于低延迟数据访问
Hadoop 不能高效存储大量小文件
Hadoop 不支持多用户写入并任意修改文件



2.Hadoop 的特点（优点）
高可用：Hadoop 底层对同一个数据维护这多个复本，即使 Hadoop 某个计算元素或者存储出现问题，也不会导致数据的丢失
高扩展：在集群之间分配任务数据，可以方便的扩展跟删除多个节点，比如美团节点就在 3K~5k 个节点
高效性：在 MapReduce 的思想下 Hadoop是并行工作的， ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2022/11/13/Linux%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/" title="Linux基础知识"><img class="post_bg" src="https://study-record-images.oss-cn-beijing.aliyuncs.com/Linux/Linux.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Linux基础知识"></a></div><div class="recent-post-info"><a class="article-title" href="/2022/11/13/Linux%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/" title="Linux基础知识">Linux基础知识</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2022-11-13T00:26:27.000Z" title="发表于 2022-11-13 08:26:27">2022-11-13</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/Others/">Others</a></span></div><div class="content">Linux 基础知识1.Linux 开山篇-内容介绍
课程大纲


Linux 主要应用


个人桌面领域的应用

此领域是传统 linux 应用薄弱的环节，近些年来随着 ubuntu、fedora 等优秀桌面环境的兴起，linux 在个人桌面领域的占有率在逐渐的提高


服务器领域

linux 在服务器领域的应用是最强的
linux 免费、稳定、高效等特点在这里得到了很好的体现，尤其在一些高端领域尤为广泛（c&#x2F;c++&#x2F;php&#x2F;java&#x2F;python&#x2F;go）


嵌入式领域

linux 运行稳定、对网络的良好支持性、低成本，且可以根据需要进行软件裁剪，内核最小可以达到几百 KB 等特点
使其近些年来在嵌入式领域的应用得到非常大的提高
主要应用：机顶盒、数字电视、网络电话、程控交换机、手机、PDA、智能家居、智能硬件等都是其应用领域。以后在物联网中应用会更加广泛





2.Linux 基础篇-Linux 入门
概述

linux 是一个开源、免费的操作系统，其稳定性、安全性、处理多并发已经得到业界的认可，目前很多企业级的项目 (c ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2022/11/10/%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%9E%B6%E6%9E%84/" title="大数据框架"><img class="post_bg" src="https://study-record-images.oss-cn-beijing.aliyuncs.com/BigDataStructure/BigDataStructure.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="大数据框架"></a></div><div class="recent-post-info"><a class="article-title" href="/2022/11/10/%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%9E%B6%E6%9E%84/" title="大数据框架">大数据框架</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2022-11-10T05:33:17.000Z" title="发表于 2022-11-10 13:33:17">2022-11-10</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a></span></div><div class="content">大数据架构0.大数据
定义

指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合，是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产
大数据主要需要解决，海量数据的采集、存储和分析计算问题


按顺序给出数据存储单位：bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB


特点（4V）

Volume（大量）

截至目前，人类生产的所有印刷材料的数据量是 200PB，而历史上全人类总共说过的话的数据量大约是 5EB
当前典型个人计算机硬盘的容量为 TB 量级，而一些大企业的数据量已经接近 EB 量级


Velocity（高速）

这是大数据区分于传统数据挖掘的最显著特征
根据 IDC 的数字宇宙的报告，预计到 2025 年，全球数据使用量将达到 163ZB
在如此海量的数据面前，处理数据的效率就是企业的生命


Variety（多样）

这种类型的多样性也让数据被分为结构化数据和非结构化数据
相对于以往便于存储的以数据库 &#x2F; 文本为主的结构化数据，非结构化数据越来越多，包括网络日志 ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2022/11/05/zookeeper%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/" title="Zookeeper基础知识"><img class="post_bg" src="https://study-record-images.oss-cn-beijing.aliyuncs.com/Zookeeper/Zookeeper.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Zookeeper基础知识"></a></div><div class="recent-post-info"><a class="article-title" href="/2022/11/05/zookeeper%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/" title="Zookeeper基础知识">Zookeeper基础知识</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2022-11-05T02:47:38.000Z" title="发表于 2022-11-05 10:47:38">2022-11-05</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a></span></div><div class="content">Zookeeper 基础知识1.Zookeeper 入门
概述

Zookeeper 是一个开源的分布式的，为分布式框架提供协调服务的 Apache 项目



Zookeeper 工作机制



特点

Zookeeper

一个领导者（Leader），多个跟随者（Follower）组成的集群


集群中只要有半数以上节点存活，Zookeeper 集群就能正常服务

Zookeeper 适合安装奇数台服务器


全局数据一致

每个 Server 保存一份相同的数据副本，Client 无论连接到哪个 Server，数据都是一致的


更新请求顺序执行

来自同一个 Client 的更新请求按其发送顺序依次执行


数据更新原子性

一次数据更新要么成功，要么失败


实时性

在一定时间范围内，Client 能读到最新数据





数据结构

ZooKeeper 数据模型的结构与 Unix 文件系统很类似
整体上可以看作是一棵树，每个节点称做一个 ZNode
每一个 ZNode 默认能够存储 1MB 的数据，每个 ZNode 都可以通过其路径唯一标识



应用场景

提供的服务包 ...</div></div></div><nav id="pagination"><div class="pagination"><span class="page-number current">1</span><a class="page-number" href="/page/2/#content-inner">2</a><span class="space">&hellip;</span><a class="page-number" href="/page/5/#content-inner">5</a><a class="extend next" rel="next" href="/page/2/#content-inner"><i class="fas fa-chevron-right fa-fw"></i></a></div></nav></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="is-center"><div class="avatar-img"><img src="https://s2.loli.net/2022/09/22/36LN4kcjYOd9HT8.jpg" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/></div><div class="author-info__name">zcm</div><div class="author-info__description"></div></div><div class="card-info-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">43</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">25</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">11</div></a></div></div><div class="sticky_layout"><div class="card-widget card-categories"><div class="item-headline">
            <i class="fas fa-folder-open"></i>
            <span>分类</span>
            
            </div>
            <ul class="card-category-list" id="aside-cat-list">
            <li class="card-category-list-item "><a class="card-category-list-link" href="/categories/Algorithm/"><span class="card-category-list-name">Algorithm</span><span class="card-category-list-count">1</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/Android/"><span class="card-category-list-name">Android</span><span class="card-category-list-count">1</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/Applet/"><span class="card-category-list-name">Applet</span><span class="card-category-list-count">4</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/DataBase/"><span class="card-category-list-name">DataBase</span><span class="card-category-list-count">3</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/Java/"><span class="card-category-list-name">Java</span><span class="card-category-list-count">11</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/Others/"><span class="card-category-list-name">Others</span><span class="card-category-list-count">7</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/Spring/"><span class="card-category-list-name">Spring</span><span class="card-category-list-count">8</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/Tips/"><span class="card-category-list-name">Tips</span><span class="card-category-list-count">2</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E4%B8%AD%E9%97%B4%E4%BB%B6/"><span class="card-category-list-name">中间件</span><span class="card-category-list-count">2</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/"><span class="card-category-list-name">大数据</span><span class="card-category-list-count">4</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E9%9D%A2%E7%BB%8F/"><span class="card-category-list-name">面经</span><span class="card-category-list-count">14</span></a></li>
            </ul></div><div class="card-widget card-archives"><div class="item-headline"><i class="fas fa-archive"></i><span>归档</span><a class="card-more-btn" href="/archives/" title="查看更多">
    <i class="fas fa-angle-right"></i></a></div><ul class="card-archive-list"><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2023/05/"><span class="card-archive-list-date">五月 2023</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2023/04/"><span class="card-archive-list-date">四月 2023</span><span class="card-archive-list-count">3</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2023/03/"><span class="card-archive-list-date">三月 2023</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2022/12/"><span class="card-archive-list-date">十二月 2022</span><span class="card-archive-list-count">2</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2022/11/"><span class="card-archive-list-date">十一月 2022</span><span class="card-archive-list-count">3</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2022/10/"><span class="card-archive-list-date">十月 2022</span><span class="card-archive-list-count">16</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2022/09/"><span class="card-archive-list-date">九月 2022</span><span class="card-archive-list-count">11</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2020/08/"><span class="card-archive-list-date">八月 2020</span><span class="card-archive-list-count">4</span></a></li></ul></div><div class="card-widget card-webinfo"><div class="item-headline"><i class="fas fa-chart-line"></i><span>网站资讯</span></div><div class="webinfo"><div class="webinfo-item"><div class="item-name">文章数目 :</div><div class="item-count">43</div></div><div class="webinfo-item"><div class="item-name">已运行时间 :</div><div class="item-count" id="runtimeshow" data-publishDate="2023-05-18T11:46:04.550Z"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">本站总字数 :</div><div class="item-count">508.4k</div></div><div class="webinfo-item"><div class="item-name">本站访客数 :</div><div class="item-count" id="busuanzi_value_site_uv"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">本站总访问量 :</div><div class="item-count" id="busuanzi_value_site_pv"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">最后更新时间 :</div><div class="item-count" id="last-push-date" data-lastPushDate="2023-05-18T11:46:04.703Z"><i class="fa-solid fa-spinner fa-spin"></i></div></div></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div class="copyright">&copy;2022 - 2023 By zcm</div><div class="framework-info"><span>框架 </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>主题 </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button id="go-up" type="button" title="回到顶部"><i class="fas fa-arrow-up"></i></button></div></div><div id="local-search"><div class="search-dialog"><nav class="search-nav"><span class="search-dialog-title">搜索</span><span id="loading-status"></span><button class="search-close-button"><i class="fas fa-times"></i></button></nav><div class="is-center" id="loading-database"><i class="fas fa-spinner fa-pulse"></i><span>  数据库加载中</span></div><div class="search-wrap"><div id="local-search-input"><div class="local-search-box"><input class="local-search-box--input" placeholder="搜索文章" type="text"/></div></div><hr/><div id="local-search-results"></div></div></div><div id="search-mask"></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.min.js"></script><script src="https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.js"></script><script src="/js/search/local-search.js"></script><div class="js-pjax"></div><script src="/js/categories.js?v1"></script><script src="/js/navigation.js?v1"></script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>